home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / Information / ROM.INFO.UPD.ARC / ROM INFO (JAN87
Encoding:
Text File  |  2019-04-13  |  35.9 KB  |  701 lines

  1. ***********************************************************************
  2. This article is being presented through the *StarBoard* Journal of  the
  3. FlagShip/StarShip  SIGs  (Special  Interest Groups) on Delphi and GEnie
  4. telecommunication networks.  Permission is hereby granted to non-profit
  5. organizations only to reprint this article or pass it along electronic-
  6. ally as long as proper credit is given  to  both  the  author  and  the
  7. *StarBoard* Journal.
  8. ***********************************************************************
  9.  
  10. ROM UPDATE INFORMATION
  11. (from UseNet)
  12.  
  13. From: cbmvax.cbm!fred (Fred Bowen)
  14. Subject: Commodore releases new ROMs
  15. Date: 12 Dec 86 23:13:37 GMT
  16. To: Commodore users
  17.  
  18. Following this little commentary are three messages describing
  19. the changes made to three ROM updates I've recently released
  20. to the mask shop.  If you have a C128, 1571, or one of those
  21. new 1541C's you should peruse these for your favorite bug. If
  22. you don't see it, I'll be upset.  You should have _reported_ it!
  23. As I said, they are off to the mask shop, so you won't be able to
  24. get them for several weeks yet.  But it is progress non-the-less,
  25. and I wanted to try and warm your cockles for the holidays.
  26. When they become available, I'll be sure to let you know who to
  27. contact, cost, and so forth, for your very own copies.
  28.  
  29. Me?  I'm gonna warm my cockles beside the Xmas tree, by the
  30. fireplace, with some 'nog or brandy.  If this news didn't do
  31. anything for you, I suggest you do likewise.  Happy holidays.
  32. --
  33. Fred Bowen                      uucp:   {ihnp4|seismo|caip}!cbmvax!fred
  34.                                 tele:   215 431-9100
  35.  
  36. Commodore Electronics, Ltd.,  1200 Wilson Drive,  West Chester,  PA,  19380
  37.  
  38.  
  39. From: cbmvax.cbm!fred (Fred Bowen)
  40. Subject: 1541B ROM update
  41. Date: 12 Dec 86 23:14:51 GMT
  42. To: Commodore users
  43.  
  44.  
  45.                           1541B DOS ROM RELEASE NOTES
  46.         Commodore Electronics, LTD.                     5 December 1986
  47.  
  48.      1541B ROM RELEASE NOTES: 251968-02   (16K byte, 300ns, checksum=$1A69)
  49.  
  50.   THE FOLLOWING MODIFICATIONS HAVE BEEN MADE TO THE 251968-01 ROM CODE TO
  51.   CREATE A NEW ROM RELEASED ON 12/05/86.  THIS RELEASE IS MADE TO CREATE
  52.   MASKED ROMS FOR PRODUCTION OF THE 1541B/C MODEL DISK DRIVE ONLY.
  53.  
  54.        1.  The interrupt rate change from 15 to 8ms for slightly better
  55.            performance caused compatibility problems with some software
  56.            that used that timing for its own purposes. It is now 15ms.
  57.  
  58.        2.  The  1541B  board  has  troubles  accessing tracks beyond 35
  59.            attributable to the new data separator, although the problem
  60.            always existed (wrong bit cell densities because TRKNUM only
  61.            listed up to track 35).  TRKNUM has been extended.
  62.  
  63.        3.  SAVE-@ (SAVE with replace) is fixed.  The variable  NODRV is
  64.            now a 16-bit addressable var,  and the STLBUF routine steals
  65.            the buffer locked by drive one.
  66.  
  67.        4.  Relative File fixes (unspecified).
  68.  
  69.        5.  Serial bus (DEVICE NOT PRESENT) fix.  TSTATN now clears IRQ.
  70.  
  71.        6.  Block read fix (unspecified).
  72.  
  73.        7.  Write to stack area bug (unspecified).
  74.  
  75.        8.  Set decimal mode (SED) before disabling IRQ (SEI) fixed.
  76.  
  77.        9.  Disk full bug (unspecified).
  78.  
  79.       10.  Add copyright notice for legal types and thieves.
  80.  
  81.       11.  The ROM checksum adjustment byte at $C001 is now $46.
  82.  
  83.   * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  84.   PLEASE NOTE:  THIS ROM WILL _NOT_ WORK IN EARLIER 1541 PCB'S, WHICH
  85.   REQUIRE DIFFERENT SIZED ROMS (8K), AMONG OTHER BOARD DIFFERENCES!
  86.   * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  87. --
  88. Fred Bowen                      uucp:   {ihnp4|seismo|caip}!cbmvax!fred
  89.                                 tele:   215 431-9100
  90.  
  91. Commodore Electronics, Ltd.,  1200 Wilson Drive,  West Chester,  PA,  19380
  92.  
  93.  
  94.  
  95.  
  96. From: cbmvax.cbm!fred (Fred Bowen)
  97. Subject: 1571 ROM update
  98. Date: 12 Dec 86 23:15:52 GMT
  99. To: Commodore users
  100.  
  101.                           1571 DOS ROM RELEASE NOTES
  102.         Commodore Electronics, LTD.                     5 December 1986
  103.  
  104.      1571 ROM RELEASE NOTES: 310654-04   (32K byte, 300ns, checksum=$D8C6)
  105.  
  106.   THE FOLLOWING MODIFICATIONS HAVE BEEN MADE TO THE 310654-03 ROM CODE TO
  107.   CREATE A NEW ROM RELEASED ON 12/05/86.  THIS RELEASE IS MADE TO CREATE
  108.   MASKED ROMS FOR PRODUCTION OF THE 1571 (NON-CR) MODEL DISK DRIVE ONLY.
  109.  
  110.        1.  The Set_Overflow flag was not disabled when exiting the 1571
  111.            controller.  This is the cause of many seemingly random  and
  112.            difficult-to-reproduce problems.  This particularly explains
  113.            most of the Relative file problems.
  114.  
  115.        2.  TSTATN  caused  'DEVICE NOT PRESENT'  errors because the IRQ
  116.            source was  never  cleared.  This  has been fixed.
  117.  
  118.        3.  The BAM swap bug.  When all the buffers are allocated by the
  119.            application,  the  DOS frees up the BAM buffer by marking it
  120.            out of memory.  When it was  reread it would also reread the
  121.            BAM for side one. If the side-1 BAM was 'dirty', it would be
  122.            corrupted.  The fix uses a new RAM location, $1B6 for a swap
  123.            flag,  and rebuilds  the  side-1  BAM  upon  a reread.  This
  124.            usually occurs with multiple  files  open  and sectors being
  125.            allocated on both sides of the disk.
  126.  
  127.        4.  Previously BAM allocation on side one would  cause  the  BAM
  128.            image to be written every access. This has been fixed.
  129.  
  130.        5.  SAVE-@ (SAVE with replace) is fixed.  The variable  NODRV is
  131.            now a 16-bit addressable var,  and the STLBUF routine steals
  132.            the buffer locked by drive one.  Original 1541 bug.
  133.  
  134.        6.  Previously an  active  collect  in 1541 emulation mode would
  135.            write a zero to the double sided flag in the  BAM.  This has
  136.            been fixed.
  137.  
  138.        7.  Applications which addressed tracks beyond 35  (on any side)
  139.            previously  used  incorrect  bit  cell densities because the
  140.            table TRKNUM only listed up to track 35.  The tables  TRACKN
  141.            and WORKTABLE  replace TRKNUM and WORKTBL, respectively, and
  142.            extend the tables to track 40.  Same situation on 1541's.
  143.  
  144.        8.  A 1541 ROM revision changed the variable TIM from $3A to $20
  145.            which resulted in problems for some applications. It is once
  146.            again $3A, like the original (-05) 1541 ROM.
  147.  
  148.        9.  USEDTS returned a  'BLOCK  NOT  AVAILABLE'  status  when the
  149.            number of blocks free was equal to 3.  This has been fixed.
  150.  
  151.       10.  Previously during a  BURST  GCR  FORMAT the activity led was
  152.            not activated.  This has been fixed.
  153.  
  154.       11.  The 1571 BURST LOAD  routine  would not load 'Locked Files'.
  155.            This has been fixed.
  156.  
  157.       12.  Previously while loading files using the BURST LOAD routine,
  158.            retries were not performed.  This has been fixed.
  159.  
  160.       13.  Motor acceleration time for the MFM controller was too long,
  161.            which affected performance when reading  and  writing in MFM
  162.            format.  This has been fixed.
  163.  
  164.       14.  Previously determining  whether  a diskette was double-sided
  165.            or single-sided  GCR  would  take too long due to valid sync
  166.            pulses found on 'flippy diskettes'  and MFM diskettes.  This
  167.            has been fixed.
  168.  
  169.       15.  SPINP interrupts  from  SP  (fast  serial  input)  were  not
  170.            enabled properly.  This has been fixed, but has no affect on
  171.            the operation of the serial bus.
  172.  
  173.       16.  Previously if a copy was performed addressing drive one, the
  174.            error channel would return status  '00,OK,00,00'.   This has
  175.            been fixed.
  176.  
  177.       17.  Previously the ROM test did not check the  first page in ROM
  178.            memory.  This has been fixed.
  179.  
  180.       18.  The ROM checksum at $8000 and $8001 is now $23, $C0.
  181.  
  182.       19.  The ROM signature at $C000 is now $D3.
  183. --
  184. Fred Bowen                      uucp:   {ihnp4|seismo|caip}!cbmvax!fred
  185.                                 tele:   215 431-9100
  186.  
  187. Commodore Electronics, Ltd.,  1200 Wilson Drive,  West Chester,  PA,  19380
  188.  
  189.  
  190.  
  191.  
  192. From: cbmvax.cbm!fred (Fred Bowen)
  193. Subject: C128 ROM update
  194. Date: 12 Dec 86 23:16:58 GMT
  195. To: Commodore users
  196.  
  197.                          C/128 SYSTEM ROM RELEASE NOTES
  198.         Commodore Electronics, LTD.                     7 November 1986
  199.  
  200.            C128 ROM RELEASE NOTES: 318018-04, 318019-04, 318020-05
  201.                                    318022-02, 318023-02
  202.  
  203.   THE FOLLOWING MODIFICATIONS HAVE BEEN MADE TO THE 318018-02, 318019-02,
  204.   AND 318020-03 CODE TO CREATE A NEW ROM SET RELEASED ON 11/07/86.  THIS
  205.   RELEASE IS MADE TO CREATE MASKED ROMS FOR PRODUCTION.  THESE ROMS ARE TO
  206.   BE USED AS A SET, REPLACING THE PREVIOUS ROM SET ENTIRELY.  THEY ARE NOT
  207.   TO BE MIXED.  THIS RELEASE IS MADE SIMULTANEOUSLY IN THE FORM OF 16KB AND
  208.   32KB ROMS,  FOR USE IN THE FOLLOWING SYSTEMS: C128, C128D, C128CR,
  209.   C128DCR, AS APPROPRIATE.
  210.  
  211.   PLEASE NOTE:  AN  11/18/85  ENGINEERING RELEASE OF A C128 ROM SET WAS
  212.   NEVER RELEASED TO PRODUCTION, AND ACCOUNTS FOR THE APPARENT JUMP IN ROM
  213.   REVISION NUMBERS.  THE FOLLOWING INFORMATION INCLUDES THOSE DIFFERENCES
  214.   AS WELL.
  215.  
  216.          The following information represents a filtered condensation  of
  217.          all  known problems, complaints, and suggestions that pertain to
  218.          the C/128 system software to  date  (exclusive  of  CP/M).   The
  219.          current ("original" ROMs) system software consists of:
  220.  
  221.          1.  Part No. 318018-02 --> BASIC LOW            ($4000-$7FFF)
  222.  
  223.          2.  Part No. 318019-02 --> BASIC HIGH, MONITOR  ($8000-$BFFF)
  224.  
  225.          3.  Part No. 318020-03 --> EDITOR, KERNEL, CP/M ($C000-$FFFF)
  226.  
  227.          4.  Part No. 315078-02 --> DIN ED, KERNEL, CP/M ($C000-$FFFF)
  228.  
  229.          5.  Part No. 318022-01 --> BASIC, MONITOR       ($4000-$BFFF)
  230.                                     (includes 1+2 above)
  231.  
  232.          6.  Part No. 318023-01 --> ED, KERN, CP/M, C64  ($C000-$FFFF)
  233.                                     (includes 3+4 above)
  234.  
  235.      The updated C/128 16KB ROM set bears the following  part  numbers. (The
  236.      PCB socket number is valid only for original PCBs).
  237.  
  238.      1.  # 318018-04 --> BASIC LOW            ($4000-$7FFF, U33) cksum= 9A40
  239.  
  240.      2.  # 318019-04 --> BASIC HIGH, MONITOR  ($8000-$BFFF, U34) cksum= 6F80
  241.  
  242.      3.  # 318020-05 --> EDITOR, KERNEL, CP/M ($C000-$FFFF, U35) cksum= EEC4
  243.  
  244.      4.  # 315078-03 --> DIN ED, KERNEL, CP/M ($C000-$FFFF, U35) cksum= E4C4
  245.  
  246.      5.  # 318022-02 --> BASIC, MONITOR       ($4000-$BFFF, U34) cksum= 09C0
  247.  
  248.      6.  # 318023-02 --> EDITOR, KERNEL, CP/M ($C000-$FFFF, U32) cksum= F324
  249.          (Note that #6 above also contains the C/64 ROM code.)
  250.  
  251.          Each 16KB ROM block contains a small patch area for changes, and
  252.          all patches described below have been accomplished such that any
  253.          particular change will never affect more than one ROM. Similarly
  254.          each ROM contains a revision status byte  (at $7FFE, $BFFE,  and
  255.          $CFFE) which  software  can test to determine the version of the
  256.          host system.  The "original" ROMs contain $00 in these locations
  257.          and  the  "update"  ROMs described herein contain $01.  Each ROM
  258.          has had several changes, as summarized on the following pages.
  259.  
  260.          Part Number 318018-04 --> BASIC LOW ($4000-$7FFF)
  261.  
  262.          1.  LIST and DELETE commands.  Previously they did not report as
  263.              errors  certain  non-numeric characters passed as arguments,
  264.              such as 'LIST A'.  This has been corrected  totally  in-line
  265.              by  adjusting  an  erroneous  relative branch in the 'RANGE'
  266.              subroutine.
  267.  
  268.          2.  CIRCLE  command.    Previously   an   unspecified   Y-radius
  269.              defaulted  to  the X-radius (as it should), but the X-radius
  270.              value had already been scaled for the  X-axis  and  not  the
  271.              Y-axis.   This has been corrected totally in-line by scaling
  272.              the radii after the defaults have been established.
  273.  
  274.          3.  RS-232 STatus.  Previously accessing  ST  after  RS-232  I/O
  275.              resulted  in  an incorrect status being returned from, and a
  276.              zero written to, location $10A14,  possibly  corrupting  the
  277.              BASIC variable area.  This was a result of BASIC calling the
  278.              Kernel routine 'READSS'  with  the  incorrect  RAM  bank  in
  279.              context.    This  has  been  corrected  totally  in-line  by
  280.              substituting the correct BASIC subroutine call.
  281.  
  282.          4.  CHAR command.  Previously using CHAR with the 80-column text
  283.              screen  (GRAPHIC  mode  5)  resulted  in  RAM  corruption at
  284.              locations $D600 and $D601 of RAM  bank  0  (the  BASIC  text
  285.              bank)  due  to BASIC calling the Editor PLOT routine without
  286.              the I/O block in context.  This has been corrected utilizing
  287.              two patch subroutines.
  288.  
  289.          5.  RENUMBER command.  Previously the pass 2 routine, which  was
  290.              to  pre-scan  BASIC  text  and report 'out of memory' errors
  291.              prior to actually changing anything, was  seriously  flawed.
  292.              This has been corrected utilizing a patch subroutine.
  293.  
  294.          6.  DELETE command.  Previously did not limit-check itself  when
  295.              moving  down  BASIC text, therefore it was possible to crash
  296.              when DELETEing lines at or near the top of memory (near  the
  297.              MMU  configuration  registers).   This  has  been  corrected
  298.              utilizing  a  patch  subroutine.   Also,  DELETE  previously
  299.              exited to MAIN via 'JMP',  effectively ending the evaluation
  300.              of the current command string.  This  has  been corrected by
  301.              substituting  an  'RTS',   allowing  direct   commands  like
  302.              'DELETE 10: PRINT"DELETED LINE 10"'  to work correctly.
  303.  
  304.          7.  PLAY command.  Previously the  SID frequency tables were not
  305.              exactly NTSC concert pitch. Also, there was no provision for
  306.              adjusting  the  frequency  for  PAL  systems.  This has been
  307.              corrected by changing the (NTSC) frequency tables,  creating
  308.              new PAL tables,  and utilizing patch code to select from the
  309.              appropriate table as determined by the Kernel PAL_NTSC flag.
  310.  
  311.          8.  The BASIC  ERROR  handler previously failed to clear pending
  312.              string temporaries when an error was TRAPed.  This  has been
  313.              corrected via patch code to reset TEMPT to TEMPST.
  314.  
  315.          9.  The powerup copyright notice has been updated to 1986, which
  316.              will serve as an immediate  visual  indication  of  the  ROM
  317.              update status.  Also, a new notice has been placed at $7FC0.
  318.  
  319.         10.  The ROM signature at location $7FFC  and  $7FFD  (lo/hi)  is
  320.              $8DEF.  (new since last release).
  321.  
  322.         11.  The ROM revision byte at  location  $7FFE,  has  incremented
  323.              from $00 to $01.
  324.  
  325.         12.  The ROM checksum byte at location $7FFF,  has  changed  from
  326.              $4C to $61.
  327.  
  328.         Part Number 318019-04 --> BASIC HIGH, MONITOR ($8000-$BFFF)
  329.  
  330.         13.  RSPRITE and RSPPOS functions.  Previously they  accepted  as
  331.              parameters  sprite  numbers  in  the  range  1-16,  which is
  332.              incorrect.  This  has  been  corrected  totally  in-line  by
  333.              limiting  the  range  check to 1-8, and reporting an illegal
  334.              quantity error for sprite numbers outside this range.
  335.  
  336.         14.  PRINT  USING  command.   Previously  there  was  an  anomaly
  337.              involving  the  use  of  floating  money  symbols  ('$') and
  338.              commas.  The command 'PRINT USING "#,##$.##";  123.45',  for
  339.              example,   resulted  in  the  output  '$,123.45',  which  is
  340.              incorrect.  This has been fixed utilizing a patch subroutine
  341.              which  checks  specifically  for  the  '$,'  occurrence  and
  342.              substitutes a '_$' ('_' = fill character) whenever found.
  343.  
  344.         15.  Relative  Coordinates  for  all  graphic  commands   (except
  345.              MOVSPR)   were   incorrectly  processed.   The  problem  was
  346.              apparent when negative relative coordinates were used, which
  347.              resulted  in  an  illegal  quantity  error.   This  has been
  348.              corrected  totally  in-line  by  substituting  a   different
  349.              subroutine  call  to pre-existing code.  This change affects
  350.              the BASIC commands LOCATE, DRAW, PAINT, BOX, CIRCLE, GSHAPE,
  351.              and  SSHAPE.   This  change  also  allows  negative absolute
  352.              coordinates to be accepted (previously they resulted  in  an
  353.              illegal  quantity error), although the legal range remains a
  354.              16-bit  value:   0-65535  (unsigned)  or  -32768  to   32767
  355.              (signed:  i.e., -1 is equivalent to 65535).
  356.  
  357.         16.  DOPEN and APPEND commands.  Previously it  was  possible  to
  358.              open  two  or  more disk channels with the same logical file
  359.              number without incurring an error  report.   This  has  been
  360.              corrected totally in-line.
  361.  
  362.         17.  MATH package.  An original  bug  fix  (ref: double zero bug)
  363.              to the (F)MULT routine has been found  to  result  in  small
  364.              errors (such as 2^15 = 32768.0001).  This has been corrected
  365.              totally in line by fixing the original (dbl-0) problem  in a
  366.              different way.
  367.  
  368.         18.  A copyright notice has been placed, starting at $BFC0.
  369.  
  370.         19.  The ROM signature at location $BFFC  and  $BFFD  (lo/hi)  is
  371.              $CDC8.  (new since last release).
  372.  
  373.         20.  The ROM revision byte at  location  $BFFE,  has  incremented
  374.              from $00 to $01.
  375.  
  376.         21.  The ROM checksum byte at location $BFFF,  has  changed  from
  377.              $3A to $C5.
  378.  
  379.         Part number 318020-05 --> EDITOR, KERNEL, CP/M ($C000-$FFFF)
  380.  
  381.         22.  CAPS LOCK Q.  Previously an error in  a  key  matrix  decode
  382.              table caused a lower-case 'Q' to be passed when the keyboard
  383.              is in CAPS LOCK mode.   The  table  has  been  corrected  by
  384.              substituting the correct value for upper-case 'Q'.
  385.  
  386.         23.  FUNCTION KEYs.  Previously the funcion key handler,  part of
  387.              the SCNKEY routine at CKIT2,  failed to detect a funtion key
  388.              string pending.  This  has been corrected via patch routine,
  389.              which  will  ignore  new  function key depressions until the
  390.              string in progress has been output (i.e., KYNDX = 0).  Also,
  391.              DOPFKY now exits via SCNRTS, instead of simply RTSing.
  392.  
  393.         24.  IOINIT  system  initialization.    Previously   the   RS-232
  394.              pseudo-6551  registers  were  not  initialized because these
  395.              values are expected to be given by the user whenever  RS-232
  396.              channels  are  OPENed.  Apparently many C64 users have taken
  397.              advantage of the fact the  C64  'happened'  to  clear  these
  398.              locations  and  fail  to specify critical parameters.  These
  399.              RS-232 registers are now  initialized  to  default  to:   no
  400.              parity, full duplex, 3-line, 1-stop bit, 8-bit words and 300
  401.              baud, via a patch subroutine.
  402.  
  403.         25.  IOINIT PAL system  initialization.   Adjustments  have  been
  404.              made to the 8563 initialization values for PAL systems.  The
  405.              PAL horizontal total (register 0) changes from $7E  to  $7F.
  406.              The PAL vertical total (register 4) changes from $27 to $26.
  407.              These  changes  shift  the  cycle  time  from  20.320us   to
  408.              20.032us.  The patch required a patch subroutine, as well as
  409.              a change to VDCTBL.
  410.  
  411.         26.  BASIN system  call.   Previously  attempting  input  from  a
  412.              logical channel to the screen (e.g., via INPUT#) resulted in
  413.              line too long errors.  This has been corrected  utilizing  a
  414.              subroutine  patch to preserve bit-7 of CRSW, which serves as
  415.              a flag to the Editor that a (pseudo)  end-of-line  has  been
  416.              reached.  Also, TBLX is copied to LINTMP to correctly locate
  417.              the current cursor line for the  Editor.  Please  note  that
  418.              switching between the 40 and 80-column text screens, opening
  419.              and closing windows,  or  clearing  text screens can confuse
  420.              logical  screen channels.  The Editor variable LINTMP ($A30)
  421.              is a global,  not local,  variable  as  it should have been.
  422.              Users can POKE LINTMP with the  logical screen  line  number
  423.              before INPUT#'s as a work-around.
  424.  
  425.         27.  OPEN RS-232 system call.   Previously  it  was  possible  to
  426.              receive  a  carry-set  status,  normally indicating a error,
  427.              when no error existed after OPENing an RS-232 channel.  This
  428.              has  been corrected totally in-line by a modification to the
  429.              code which checks for the proper X-line hardware states.
  430.  
  431.         28.  LOAD system call.  Previously the normal (a.k.a.  SLOW) load
  432.              mechanism  did  not  preserve  the  starting  address of any
  433.              LOADs, which made  the  BASIC  'BOOT  "file"'  command  form
  434.              malfunction  unpredictably.  This is apparent only when used
  435.              with 1541 drives.  This  has  been  corrected  via  a  patch
  436.              subroutine,  which  saves the starting address of all LOADed
  437.              files at SAL and  SAH,  the  same  place  the  fast  (a.k.a.
  438.              BURST) load mechanism does.
  439.  
  440.         29.  DMA system call.  Previously the Kernel forced the I/O block
  441.              into  the user's memory configuration at all times, which is
  442.              no longer necessary  and,  in  fact,  seriously  limits  the
  443.              functionality of the RAM expansion cartridge.  This has been
  444.              corrected by a ROM patch routine,  which affects  all Kernel
  445.              DMA system calls as well as the BASIC FETCH, STASH, and SWAP
  446.              commands.  Also,  previously  it  was possible for an IRQ to
  447.              occur  between  the  'arm DMA'  and 'trigger DMA' sequences,
  448.              resulting  in  a DMA operation with the system configuration
  449.              in  context regardless of desired configuration.   This  has
  450.              been corrected by adding 'PHP/SEI...PLP' instructions around
  451.              the JSR to DMA RAM code at $3F0.  Applications using the DMA
  452.              RAM code at $3F0 should do likewise.  Finally, in this patch
  453.              changes were made to enable DMA operations to all RAM  banks
  454.              by correctly using the VIC bank pointer found in the MMU RAM
  455.              configuration register ($D506,  VA16=bit-6 and  VA17=bit-7).
  456.              Applications using the Kernel routine at $FF50 will  inherit
  457.              these changes automatically. Please note that NMI interrupts
  458.              can screw-up DMA operations, as they cannot be masked.
  459.  
  460.         30.  A copyright notice has been placed, starting at $CFC0.
  461.  
  462.         31.  The ROM location $CFF8 is reserved  for  national  character
  463.              ROM checksums. This does not apply to US ROMs, which contain
  464.              $FF here.  (new since last release).
  465.  
  466.         32.  The ROM location $CFF9 is now reserved  for  country  codes.
  467.              The US ROMs contain $FF here.  (new since last release).
  468.  
  469.         33.  The  ROM  location  $CFFA  and  $CFFB  (lo/hi)  contain  the
  470.              national character set signature.  This does not apply to US
  471.              ROMs, which contain $FFFF here.  (new since last release).
  472.  
  473.         34.  The ROM signature at location $CFFC  and  $CFFD  (lo/hi)  is
  474.              $8F76.  (new since last release).
  475.  
  476.         35.  The ROM revision byte at  location  $CFFE,  has  incremented
  477.              from $00 to $01.
  478.  
  479.         36.  The ROM checksum byte at location $CFFF,  has  changed  from
  480.              $C3 to $3C.
  481.  
  482.         37.  The Kernel revision byte at location $FF80  has  incremented
  483.              from $00 to $01.
  484.  
  485.         Part number 315078-03 --> DIN ED, KERNEL, CP/M ($C000-$FFFF)
  486.  
  487.          There  have  been  no  revisions  to the national portions of the
  488.          many national Kernel/Editor ROMs.  All revisions described  above
  489.          for the US version have also been made to the national versions.
  490.  
  491.         38.  A copyright notice has been placed, starting at $CFC0.
  492.  
  493.         39.  The ROM location $CFF8 is reserved  for  national  character
  494.              ROM checksums.  The German/Austrian (DIN) ROMs contain a $FF
  495.              here (that really is the checksum!).
  496.  
  497.         40.  The ROM location $CFF9 is now reserved  for  country  codes.
  498.              The German/Austrian (DIN) ROMs contain $00  here.   US  ROMs
  499.              contain $FF here.
  500.  
  501.         41.  The  ROM  location  $CFFA  and  $CFFB  (lo/hi)  contain  the
  502.              national  character  set signature.  The  DIN  ROMs  contain
  503.              $91F3 here.  This is unused ($FFFF) for US ROMs.
  504.  
  505.         42.  The ROM signature at location $CFFC  and  $CFFD  (lo/hi)  is
  506.              $EA3B.
  507.  
  508.         43.  The ROM revision byte at  location  $CFFE,  has  incremented
  509.              from $00 to $01.
  510.  
  511.         44.  The ROM checksum byte at location $CFFF,  has  changed  from
  512.              $C3 to $4C.
  513.  
  514.         45.  The Kernel revision byte at location $FF80  has  incremented
  515.              from $00 to $01.
  516.  
  517.          C/128 developer and documentation notes
  518.  
  519.          There were quite a few items that, for one reason or another,  I
  520.          categorized   as   un-fixable   as   the  fix  would  compromise
  521.          compatibility  or  be  too  radical  given  the  work-around  or
  522.          relative  severity  of  the  problem.  They are included here to
  523.          document them along with any implications, work-arounds, etc.
  524.  
  525.          1.  DMA interface.  It should also be noted that DMA hardware is
  526.              unreliable  at  2MHz  clock speeds and consequently the user
  527.              must  insure  1MHz  (SLOW)  mode  is  used  before  any  DMA
  528.              operations are performed.  NMI interrupts  will  also  cause
  529.              problems, and should be disabled or somehow avoided.  RS-232
  530.              operations use NMIs;  the  remote  should  be  XOFFed or the
  531.              channel disabled before DMA operations are performed.
  532.  
  533.          2.  IRQ handler.  It is possible for the Kernel IRQ  handler  to
  534.              perform  a keyscan when the IRQ was not the Kernel's.  While
  535.              the fix is trivial,  I did not include it because  it  might
  536.              cause problems with existing software which  may  be  taking
  537.              advantage of the unintentional keyscans.
  538.  
  539.          3.  IRQ and NMI handlers.  The Kernel  forces  the  system  bank
  540.              into  context  before taking the RAM indirect vectors to the
  541.              actual interrupt handler.  Much flexibility can be added  to
  542.              the  mechanism if the memory bank to be brought into context
  543.              at interrupt time could be read from a variable instead of a
  544.              ROM constant.  I am reluctant to include this change because
  545.              the RAM variable would have to be located  in  a  previously
  546.              'free' location, which may be used by existing applications.
  547.  
  548.          4.  SAVE-to-disk.  It is not possible to SAVE the last  byte  of
  549.              any  memory  bank  (e.g.,  RAM  at  $FFFF), because the SAVE
  550.              routine requires you to specify the end of the  area  to  be
  551.              SAVEd  as  the  ending  address PLUS ONE ($FFFF+1 -> $0000).
  552.              This is a problem found on all CBM 65xx systems.
  553.  
  554.          5.  SAVE-to-cassette.  It is not possible to save the last  page
  555.              of  any memory bank (e.g., RAM at $FF00-$FFFF) to tape.  The
  556.              tape handler hangs with the motor  running  until  the  user
  557.              STOPs  it.   This is a problem found on all CBM 65xx systems
  558.              except the Plus-4.
  559.  
  560.          6.  SAVE and LOAD.   While  program  SAVEs  correctly  save  the
  561.              16-bit  starting  address  for  future  LOADs,  the existing
  562.              formats do  not  save  the  memory  bank.   This  cannot  be
  563.              accommodated  without  the  creation of special C128 program
  564.              headers  for  disk  and  tape,  which  is  undesirable   and
  565.              non-trivial.
  566.  
  567.          7.  STOP/RESET monitor entry.  It is not possible to  enter  the
  568.              Monitor  directly via the STOP/RESET sequence from BASIC and
  569.              then eXit back to BASIC without  incurring  a  'cold'  BASIC
  570.              initialization.   The  alternative,  taking the BASIC 'warm'
  571.              start route, would result in a system crash if BASIC had not
  572.              been properly initialized and is therefore not a recommended
  573.              fix.  The work-around, assuming  BASIC  was  running  before
  574.              STOP/RESET,  is  for  the  user  to place the value $C1 into
  575.              location $A04 (INITSTATUS) and then eXit.
  576.  
  577.          8.  Monitor 'H' (hunt) command.   Because  the  editor  performs
  578.              various translations on data read from the screen, it is not
  579.              possible to Hunt for certain CBM characters, such as pi  and
  580.              all reverse-field characters.
  581.  
  582.          9.  BOX command.   BOX,  because  of  the  particular  algorithm
  583.              utilized,  has  a  restricted  range  of  -16384  to  +16383
  584.              (unscaled).  The algorithm uses parameters  that  are  twice
  585.              those  given  for  calculations  and divides down the result
  586.              before  plotting.   Thus  it  is  possible  for  very  large
  587.              (unscaled)  positive coordinates to result in large negative
  588.              plots.   The  work-around   is   to   use   SCALEing,   user
  589.              range-checking,  or  avoid BOX and use either DRAW or CIRCLE
  590.              commands instead.
  591.  
  592.         10.  RDOT, PEN, and  RSPPOS  functions.   These  BASIC  functions
  593.              return   the  current  pixel  cursor,  lightpen  and  sprite
  594.              positions, respectively, but  the  values  they  return  are
  595.              unSCALEd.   Correcting  this is trivial, but would result in
  596.              problems  for  existing  applications  as  well   as   being
  597.              incompatible with C64 VSP and the PLUS-4.
  598.  
  599.         11.  FNDEF and GRAPHIC modes.  After defining  a  user  function,
  600.              anything that results in program relocation must be avoided,
  601.              such as GRAPHIC  'n'  or  GRAPHIC  CLR.   There  is  no  fix
  602.              planned.  The work-around is a general rule:  define GRAPHIC
  603.              screens first (then SCALE), then define functions.
  604.  
  605.         12.  HELP command.  HELP does not completely identify two type of
  606.              syntax errors:  'RUN n' where 'n' is an undefined statement,
  607.              and 'XXXX n' where 'XXXX' is any BASIC command which expects
  608.              no  argument.   In  the  RUN  case,  TXTPTR had already been
  609.              reset, but not OLDLIN, thus the correct  line  is  displayed
  610.              but  without  any  highlighting.  In the other case, because
  611.              XEQCM exits via CHRGET, TXTPTR  is  incremented  before  the
  612.              error  is  caught,  resulting in part of the error not being
  613.              highlighted.  The  fix  would  be  too  complex,  especially
  614.              considering  the  fact that the line containing the error is
  615.              reported, albeit without highlighting.
  616.  
  617.         13.  GETKEY  function.   In  the  form  'GETKEY  A',  this  BASIC
  618.              function  should  wait  until  a numeric key is pressed, but
  619.              certain non-numeric keys are accepted, such as  'E',  colon,
  620.              comma,  period,  '+', and '-'.  The same anomaly occurs with
  621.              'GET A' for the same reason, as is a known CBM quirk.
  622.  
  623.         14.  PUDEF and PRINT USING commands.  There is poor documentation
  624.              of the fact that USING format fields such as "$,###.##", the
  625.              leading '$' or commas are not interpreted per the PUDEFs  as
  626.              they  are considered not part of the numeric field.  This is
  627.              found to occur in all versions of CBM BASIC 3.5 or higher.
  628.  
  629.         15.  RENUMBER command.  Because of the routine's use of LINNUM to
  630.              fetch  from BASIC text the statement number of an object, it
  631.              is possible to get a 'syntax error' when none existed within
  632.              the RENUMBER command line itself.  LINNUM itself reports any
  633.              line numbers it  reads  that  are  out  of  range  (>63999).
  634.              Actually,  you  could  use  this to 'protect' a program from
  635.              RENUMBERing.  Also note that RENUMBER  can not renumber line
  636.              ranges.   Therefore,  LIST  and  DELETE  statements within a
  637.              program are NOT changed nor will they generate any errors.
  638.  
  639.         16.  OUT of MEMORY ERROR.  It is possible to hang the system with
  640.              this error from a running program when there is insufficient
  641.              memory to contain the string representation of the  original
  642.              line number where the error occurred.  One must STOP/RESTORE
  643.              the system and type CLR to recover.  This problem  is  found
  644.              on most CBM 65xx systems.
  645.  
  646.         17.  BASIN ($FFCF) calls return <space><return> to <return> input
  647.              (i.e., null input line).  The culprit is an unnecessary  BEQ
  648.              test in LOOP4, which was left in for  compatibility with the
  649.              C64 and PLUS-4 editors, which behave in a similar manner.
  650.  
  651.         18.  MATH package.  The binding of operators is such  that  unary
  652.              minuses are evaluated after powers. This results in NO error
  653.              when  equations  of  the  form (-4^.5) are evaluated (square
  654.              root of a negative number). Of course, the error is given if
  655.              the sign  of  the number is known when the power is  applied
  656.              (eg., X=-4 :PRINT X^.5). This is a known CBM quirk.
  657.  
  658.         19.  BASIC  DOS  commands,  such  as   DOPEN  and  APPEND,  limit
  659.              filenames to 16 characters maximum.  However,  when the name
  660.              string includes the filetype,  such as "LONGLONGLONGLONG,P",
  661.              BASIC reports a FILENAME TOO LONG error when, in fact, it is
  662.              valid.  This is a problem on all CBM systems > DOS 3.0.
  663.  
  664.         20.  DCLOSE  accepts both LFN and UNIT parameters simultaneously,
  665.              which it should not (they should be mutually exclusive). The
  666.              LFN is always used, and the UNIT ignored, if both are given.
  667.  
  668.         21.  AUTO command puts next line number into the  KEY buffer.  It
  669.              should probably just print it.  This  only  causes a problem
  670.              when used with function key strings containing <return>s.
  671.  
  672.         22.  INSERT Editor  mode  is  not  canceled  by  specific  ESCAPE
  673.              sequences    which    move   the   cursor.    For   example,
  674.              <INS><INS><INS> <ESC>K <CRSR><CRSR><CRSR>  illustrates  that
  675.              staying in INSERT mode after moving the cursor to the EOL is
  676.              undesirable.
  677.  
  678.         23.  CIRCLE  command  in  multicolor  mode   calculates   default
  679.              Y-radius   based   upon   twice   the   X-radius.   This  is
  680.              undesirable, but maintained to preserve compatibility  among
  681.              C64 VSP, PLUS-4, and C128.
  682.  
  683.         24.  TAPEs written in FAST mode are occasionally hard to read  in
  684.              SLOW mode.  While I would not be surprised by this,  I could
  685.              not repeat the problem.  The complaint comes  from  PAL/50Hz
  686.              environments, but that may be the only place tapes are used!
  687.              Users should take care to use tapes only in SLOW (1MHz) mode
  688.              so that the tapes can be read on PETs, 8032s, C64s, etc.
  689.  
  690.         25.  VERIFY and DVERIFY will report 'verify error' when, in fact,
  691.              the programs are identical.  This  occurs  when  the  LOADed
  692.              version of the BASIC program has been relocated since it was
  693.              SAVEd, usually the result of the GRAPHIC  command.  In  such
  694.              cases, the MSB of line links differ,  and  (D)VERIFY  fails.
  695.              Try GRAPHIC <n|CLR> as appropriate and try again.
  696. --
  697. Fred Bowen                      uucp:   {ihnp4|seismo|caip}!cbmvax!fred
  698.                                 tele:   215 431-9100
  699.  
  700. Commodore Electronics, Ltd.,  1200 Wilson Drive,  West Chester,  PA,  19380
  701.